Code coverage report for src/path-observer.js

Statements: 85.37% (35 / 41)      Branches: 41.67% (5 / 12)      Functions: 91.67% (11 / 12)      Lines: 87.18% (34 / 39)      Ignored: none     

All files » src/ » path-observer.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 791     1   3   1     1 1 3   3   3   3 5 5     3     1 8   8   8 5     8       8 4   8     1 3 3 3 1       1 9   9 9       1                   1     1        
System.register([], function (_export) {
  "use strict";
 
  var PathObserver;
 
  function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
  return {
    setters: [],
    execute: function () {
      PathObserver = (function () {
        function PathObserver(leftObserver, getRightObserver, value) {
          var _this = this;
 
          _classCallCheck(this, PathObserver);
 
          this.leftObserver = leftObserver;
 
          this.disposeLeft = leftObserver.subscribe(function (newValue) {
            var newRightValue = _this.updateRight(getRightObserver(newValue));
            _this.notify(newRightValue);
          });
 
          this.updateRight(getRightObserver(value));
        }
 
        PathObserver.prototype.updateRight = function updateRight(observer) {
          var _this2 = this;
 
          this.rightObserver = observer;
 
          if (this.disposeRight) {
            this.disposeRight();
          }
 
          Iif (!observer) {
            return null;
          }
 
          this.disposeRight = observer.subscribe(function (newValue) {
            return _this2.notify(newValue);
          });
          return observer.getValue();
        };
 
        PathObserver.prototype.subscribe = function subscribe(callback) {
          var that = this;
          that.callback = callback;
          return function () {
            that.callback = null;
          };
        };
 
        PathObserver.prototype.notify = function notify(newValue) {
          var callback = this.callback;
 
          Eif (callback) {
            callback(newValue);
          }
        };
 
        PathObserver.prototype.dispose = function dispose() {
          if (this.disposeLeft) {
            this.disposeLeft();
          }
 
          if (this.disposeRight) {
            this.disposeRight();
          }
        };
 
        return PathObserver;
      })();
 
      _export("PathObserver", PathObserver);
    }
  };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2JpbmRpbmcvc3JjL3BhdGgtb2JzZXJ2ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O01BQWEsWUFBWTs7Ozs7OztBQUFaLGtCQUFZO0FBQ1osaUJBREEsWUFBWSxDQUNYLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUM7OztnQ0FEdkMsWUFBWTs7QUFFckIsY0FBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7O0FBRWpDLGNBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFDLFFBQVEsRUFBSztBQUN0RCxnQkFBSSxhQUFhLEdBQUcsTUFBSyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNqRSxrQkFBSyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7V0FDNUIsQ0FBQyxDQUFDOztBQUVILGNBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMzQzs7QUFWVSxvQkFBWSxXQVl2QixXQUFXLEdBQUEscUJBQUMsUUFBUSxFQUFDOzs7QUFDbkIsY0FBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7O0FBRTlCLGNBQUcsSUFBSSxDQUFDLFlBQVksRUFBQztBQUNuQixnQkFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1dBQ3JCOztBQUVELGNBQUcsQ0FBQyxRQUFRLEVBQUM7QUFDWCxtQkFBTyxJQUFJLENBQUM7V0FDYjs7QUFFRCxjQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBQSxRQUFRO21CQUFJLE9BQUssTUFBTSxDQUFDLFFBQVEsQ0FBQztXQUFBLENBQUMsQ0FBQztBQUMxRSxpQkFBTyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDNUI7O0FBekJVLG9CQUFZLFdBMkJ2QixTQUFTLEdBQUEsbUJBQUMsUUFBUSxFQUFDO0FBQ2pCLGNBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNoQixjQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUN6QixpQkFBTyxZQUFVO0FBQ2YsZ0JBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1dBQ3RCLENBQUM7U0FDSDs7QUFqQ1Usb0JBQVksV0FtQ3ZCLE1BQU0sR0FBQSxnQkFBQyxRQUFRLEVBQUM7QUFDZCxjQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDOztBQUU3QixjQUFHLFFBQVEsRUFBQztBQUNWLG9CQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7V0FDcEI7U0FDRjs7QUF6Q1Usb0JBQVksV0EyQ3ZCLE9BQU8sR0FBQSxtQkFBRTtBQUNQLGNBQUcsSUFBSSxDQUFDLFdBQVcsRUFBQztBQUNsQixnQkFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1dBQ3BCOztBQUVELGNBQUcsSUFBSSxDQUFDLFlBQVksRUFBQztBQUNuQixnQkFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1dBQ3JCO1NBQ0Y7O2VBbkRVLFlBQVk7Ozs4QkFBWixZQUFZIiwiZmlsZSI6Ii9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2JpbmRpbmcvc3JjL3BhdGgtb2JzZXJ2ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGF0aE9ic2VydmVyIHtcbiAgY29uc3RydWN0b3IobGVmdE9ic2VydmVyLCBnZXRSaWdodE9ic2VydmVyLCB2YWx1ZSl7XG4gICAgdGhpcy5sZWZ0T2JzZXJ2ZXIgPSBsZWZ0T2JzZXJ2ZXI7XG4gICAgXG4gICAgdGhpcy5kaXNwb3NlTGVmdCA9IGxlZnRPYnNlcnZlci5zdWJzY3JpYmUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICB2YXIgbmV3UmlnaHRWYWx1ZSA9IHRoaXMudXBkYXRlUmlnaHQoZ2V0UmlnaHRPYnNlcnZlcihuZXdWYWx1ZSkpO1xuICAgICAgdGhpcy5ub3RpZnkobmV3UmlnaHRWYWx1ZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZVJpZ2h0KGdldFJpZ2h0T2JzZXJ2ZXIodmFsdWUpKTtcbiAgfVxuXG4gIHVwZGF0ZVJpZ2h0KG9ic2VydmVyKXtcbiAgICB0aGlzLnJpZ2h0T2JzZXJ2ZXIgPSBvYnNlcnZlcjtcblxuICAgIGlmKHRoaXMuZGlzcG9zZVJpZ2h0KXtcbiAgICAgIHRoaXMuZGlzcG9zZVJpZ2h0KCk7XG4gICAgfVxuXG4gICAgaWYoIW9ic2VydmVyKXtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcG9zZVJpZ2h0ID0gb2JzZXJ2ZXIuc3Vic2NyaWJlKG5ld1ZhbHVlID0+IHRoaXMubm90aWZ5KG5ld1ZhbHVlKSk7XG4gICAgcmV0dXJuIG9ic2VydmVyLmdldFZhbHVlKCk7XG4gIH1cblxuICBzdWJzY3JpYmUoY2FsbGJhY2spe1xuICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICB0aGF0LmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCl7XG4gICAgICB0aGF0LmNhbGxiYWNrID0gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgbm90aWZ5KG5ld1ZhbHVlKXtcbiAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLmNhbGxiYWNrO1xuXG4gICAgaWYoY2FsbGJhY2spe1xuICAgICAgY2FsbGJhY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGRpc3Bvc2UoKXtcbiAgICBpZih0aGlzLmRpc3Bvc2VMZWZ0KXtcbiAgICAgIHRoaXMuZGlzcG9zZUxlZnQoKTtcbiAgICB9XG5cbiAgICBpZih0aGlzLmRpc3Bvc2VSaWdodCl7XG4gICAgICB0aGlzLmRpc3Bvc2VSaWdodCgpO1xuICAgIH1cbiAgfVxufVxuIl19